/*
 *	$Id: gui.h 163 2009-06-20 00:05:27Z wabsie $
 */

#ifndef _GUI_H
#define	_GUI_H

#include <agar/core.h>	// Agar
#include <agar/gui.h>	// ...

#include <cstdlib>		// EXIT_FAILURE
#include <cstdio>		// printf & co.
#include <vector>		// STL vector
#include <stack>		// STL stack
#include <fstream>		// STL fstream
#include "vizobj.h"		// GUI indeholder viz-objekter
#include "emobj.h"		// Skal bruges til tilføjelse af objekter

using namespace std;	// STL-stuff ligger namespace 'std'


class gui
{
public:
	gui(int w = 640, int h = 480, int bpp = 32);
	~gui();
	void run();

private:
	static const int	guiFlags;
	static const char	*guiTitle;
	static const int	guiFPS;

	AG_Menu				*appMenu;
	vector<vizobj*>		win;		// Dynamisk array af viz-vinduer
	
	void die(const char *format, ...) const;
	int findActiveViz();
	void buryTheDead();

	static void menuNewVIZ(AG_Event *event);	// Opretter en ny Visual Inspection Zone
	static void menuClose(AG_Event *event);		// Lukker forgrundsvinduet

	static void loadVIZ(AG_Event *event);		// Åbner en gemt VIZ-fil og giver det fokus
	static void menuOpen(AG_Event *event);		// ...

	static void menuSave(AG_Event *event);		// Gemmer forgrundsvinduet til en fil

	static void menuObj(AG_Event *event);
	static void menuObjDelete(AG_Event *event);
	static void menuObjAdd(AG_Event *event);

	static void menuWin(AG_Event *event);
	static void menuWinSelect(AG_Event *event);

	static void menuAbout(AG_Event *event);
};

#endif	/* _GUI_H */
